package com.imprenta.ejb;


import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import com.hibernate.util.HibernateUtil;
import com.imprenta.model.PedidoBase;

public class EjbPedido {
	
	@SuppressWarnings("rawtypes")
	public static ArrayList<PedidoBase> getListaPedido(){
		
		Session session = HibernateUtil.getSessionFactory().openSession();
		ArrayList<PedidoBase> listaPedido = new ArrayList<PedidoBase>();
		try {
			String q = "select distinct p.pedidoid, c.nombre ||' '|| c.apellido, p.fecha, pr.descripcion, "+
					"dp.cantidad, dp.precio, c.clienteid from Pedido p inner join p.cliente c inner join p.detallepedidos dp " +
					"inner join dp.producto pr inner join dp.resumenpedidos rp order by p.pedidoid ";
			Query query = session.createQuery(q);
			List  l = query.list();
			for (int i = 0; i < l.size(); i++) {
				Object[] items = (Object[]) l.get(i);
				PedidoBase pedidoBase = new PedidoBase();
				
				pedidoBase.setPedidoId(items[0].toString());
				pedidoBase.setNombreCompleto(items[1].toString());
				//DateFormat df = new SimpleDateFormat(("yyyy-MM-dd"));
				pedidoBase.setFecha(items[2].toString());
				pedidoBase.setNombreProducto(items[3].toString());
				pedidoBase.setCantidad(Integer.parseInt(items[4].toString()));
				pedidoBase.setTotal(Double.parseDouble(items[5].toString()));
				pedidoBase.setClienteId(Integer.parseInt(items[6].toString()));
				
				listaPedido.add(pedidoBase);
			}
		} catch (HibernateException he) {
			// TODO: handle exception
			he.printStackTrace();
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			if (session != null) {
				session.close();
			}
		}
		return listaPedido;
		
	}//end getlistapedido
	
@SuppressWarnings("rawtypes")
public static ArrayList<PedidoBase> getListaPedidoById(int _id){
		
		Session session = HibernateUtil.getSessionFactory().openSession();
		ArrayList<PedidoBase> listaPedido = new ArrayList<PedidoBase>();
		try {
			String q = "select distinct p.pedidoid, c.nombre ||' '|| c.apellido, p.fecha, pr.descripcion, "+
					"dp.cantidad, dp.precio, c.clienteid from Pedido p inner join p.cliente c inner join p.detallepedidos dp " +
					"inner join dp.producto pr inner join dp.resumenpedidos rp where c.clienteid = :id order by p.pedidoid ";
			Query query = session.createQuery(q);
			query.setParameter("id", _id);
			List  l = query.list();
			for (int i = 0; i < l.size(); i++) {
				Object[] items = (Object[]) l.get(i);
				PedidoBase pedidoBase = new PedidoBase();
				
				pedidoBase.setPedidoId(items[0].toString());
				pedidoBase.setNombreCompleto(items[1].toString());
				//DateFormat df = new SimpleDateFormat(("yyyy-MM-dd"));
				pedidoBase.setFecha(items[2].toString());
				pedidoBase.setNombreProducto(items[3].toString());
				pedidoBase.setCantidad(Integer.parseInt(items[4].toString()));
				pedidoBase.setTotal(Double.parseDouble(items[5].toString()));
				pedidoBase.setClienteId(Integer.parseInt(items[6].toString()));
				
				listaPedido.add(pedidoBase);
			}
		} catch (HibernateException he) {
			// TODO: handle exception
			he.printStackTrace();
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			if (session != null) {
				session.close();
			}
		}
		return listaPedido;
		
	}//end getlistapedidobyid
}
